% fname: routing_oddeven__sel_nop__topology_8x8__.m
% ./noxim -routing oddeven -sel nop -dimx 8 -dimy 8  -sim 10000 -warmup 2000 -size 8 8 -traffic transpose1 -buffer 4 

function [max_pir, max_throughput, min_delay] = routing_oddeven__sel_nop__topology_8x8__(symbol)

data = [
%             pir      avg_delay     throughput      max_delay       rpackets         rflits
            0.008        17.4486      0.0627012            112           4015          32103
            0.008        18.2792      0.0657344             89           4209          33656
            0.008        17.6851      0.0639277            112           4093          32731
            0.008        17.5317      0.0635332             97           4068          32529
            0.008        17.9469      0.0644551            112           4124          33001
            0.008        18.3742      0.0648281            112           4148          33192
            0.008        18.6813      0.0644922            123           4126          33020
            0.008        18.3445      0.0649141             96           4154          33236
            0.008        17.3733         0.0625            118           4002          32000
            0.008        18.0671      0.0628809             98           4024          32195
            0.008        17.2106      0.0628594            101           4021          32184
            0.008        17.8987      0.0643887            101           4118          32967
            0.008        17.8267      0.0636973            110           4075          32613
            0.008        17.1083      0.0626172             90           4007          32060
            0.008        17.5741      0.0631914            129           4046          32354
            0.008        17.7134      0.0632188            123           4044          32368
            0.008        17.7401         0.0635            104           4063          32512
            0.008        17.5261      0.0655938            109           4197          33584
            0.008        17.8022      0.0649531            103           4156          33256
            0.008        18.0631      0.0663789             93           4249          33986
           0.0088        18.3772      0.0692656            107           4435          35464
           0.0088        19.2037       0.071793            109           4595          36758
           0.0088        18.4844      0.0687051            125           4397          35177
           0.0088        19.1288      0.0706973            121           4527          36197
           0.0088        18.9424      0.0712988            122           4565          36505
           0.0088        20.3466      0.0715508            188           4579          36634
           0.0088        18.1288      0.0685586             97           4386          35102
           0.0088        18.8604      0.0713633            120           4570          36538
           0.0088        19.0134      0.0687832            151           4399          35217
           0.0088        19.5576       0.070373            178           4505          36031
           0.0088        18.2652      0.0687969             96           4404          35224
           0.0088        19.3027      0.0685645            139           4387          35105
           0.0088        18.8271      0.0704023             97           4506          36046
           0.0088        19.1025      0.0695547            116           4449          35612
           0.0088        19.0851      0.0698203            173           4466          35748
           0.0088        18.4581      0.0681445            121           4366          34890
           0.0088        19.0786      0.0707676            103           4529          36233
           0.0088        19.0127      0.0702187            100           4496          35952
           0.0088        18.5471      0.0699727            116           4482          35826
           0.0088        19.2743      0.0706191            145           4521          36157
           0.0096        20.6984      0.0763789            129           4887          39106
           0.0096         20.832      0.0777539            156           4975          39810
           0.0096        19.5674      0.0751621            133           4815          38483
           0.0096        20.5622      0.0764355            164           4893          39135
           0.0096        19.8394      0.0784492            110           5019          40166
           0.0096         20.584      0.0754258            205           4827          38618
           0.0096        20.8777      0.0775938            129           4965          39728
           0.0096        19.0466      0.0743418            122           4759          38063
           0.0096        19.9159      0.0765664            141           4899          39202
           0.0096        20.5276      0.0793652            152           5080          40635
           0.0096        19.9748      0.0774062            158           4956          39632
           0.0096        20.4568      0.0767285            170           4908          39285
           0.0096         21.056      0.0779004            185           4983          39885
           0.0096        19.7934      0.0763164            152           4884          39074
           0.0096        20.2749      0.0780469            126           4998          39960
           0.0096        20.3851      0.0783711            118           5017          40126
           0.0096        19.7525      0.0788711            107           5046          40382
           0.0096        21.1739      0.0785215            155           5025          40203
           0.0096        21.6574      0.0771699            154           4936          39511
           0.0096        20.8797      0.0782246            165           5004          40051
           0.0104        22.8579      0.0844375            252           5406          43232
           0.0104         22.318       0.082416            171           5273          42197
           0.0104        23.0751      0.0825488            310           5283          42265
           0.0104        21.5354      0.0833828            139           5336          42692
           0.0104        21.9298      0.0824687            183           5283          42224
           0.0104        22.4632       0.082791            199           5298          42389
           0.0104        22.5499      0.0852656            155           5454          43656
           0.0104        22.4439      0.0848379            230           5429          43437
           0.0104        20.6745      0.0819141            174           5244          41940
           0.0104        22.1604      0.0837715            237           5360          42891
           0.0104        20.7593      0.0819395            126           5244          41953
           0.0104        22.2454      0.0822266            173           5264          42100
           0.0104        22.1977      0.0838398            154           5367          42926
           0.0104        22.1884      0.0837734            195           5360          42892
           0.0104        21.2418      0.0820195            248           5249          41994
           0.0104        22.0664      0.0847422            160           5423          43388
           0.0104        21.6727      0.0834668            158           5343          42735
           0.0104         22.224      0.0826055            169           5290          42294
           0.0104        22.1169       0.082916            162           5302          42453
           0.0104        22.9801      0.0824922            236           5282          42236
           0.0112        23.7889       0.089498            175           5731          45823
           0.0112        23.4436      0.0906797            209           5800          46428
           0.0112        23.8165      0.0871348            211           5575          44613
           0.0112        23.4756      0.0894922            218           5730          45820
           0.0112        23.2383       0.088793            301           5682          45462
           0.0112        24.5984      0.0903125            288           5784          46240
           0.0112        24.5055      0.0890508            300           5701          45594
           0.0112        24.3215      0.0891094            281           5701          45624
           0.0112        24.1497      0.0903242            243           5780          46246
           0.0112         25.115      0.0902578            361           5776          46212
           0.0112        25.8729       0.089418            290           5727          45782
           0.0112        24.9795      0.0912617            251           5840          46726
           0.0112        25.7385      0.0906895            230           5802          46433
           0.0112        23.8411      0.0897187            267           5747          45936
           0.0112        25.2105      0.0874063            520           5592          44752
           0.0112        24.2442       0.089748            232           5742          45951
           0.0112        24.3251      0.0890547            221           5699          45596
           0.0112        24.8385       0.090627            268           5802          46401
           0.0112        24.1052      0.0889766            184           5695          45556
           0.0112        23.9548      0.0872051            321           5581          44649
            0.012        30.5974      0.0970488            437           6210          49689
            0.012         30.964      0.0979551            369           6271          50153
            0.012        26.5912      0.0952188            254           6094          48752
            0.012        27.3735      0.0944727            234           6048          48370
            0.012        26.7947      0.0958945            291           6136          49098
            0.012        28.5861      0.0957441            325           6127          49021
            0.012        26.6036      0.0951523            256           6090          48718
            0.012        29.0231      0.0965742            401           6180          49446
            0.012        26.3963      0.0933477            304           5976          47794
            0.012          28.55      0.0973945            323           6233          49866
            0.012        26.2382        0.09825            208           6288          50304
            0.012        29.7742      0.0951895            304           6093          48737
            0.012        26.3836      0.0940039            197           6020          48130
            0.012        26.9695      0.0957246            183           6128          49011
            0.012        26.2118       0.095207            428           6090          48746
            0.012        25.7077      0.0956309            239           6121          48963
            0.012        28.6645      0.0964883            341           6173          49402
            0.012        29.9298      0.0987285            343           6322          50549
            0.012         26.674      0.0955801            191           6119          48937
            0.012        28.8943      0.0953438            313           6102          48816
           0.0128        32.7101       0.102533            344           6562          52497
           0.0128        29.8943       0.101191            534           6473          51810
           0.0128         30.427        0.10227            339           6548          52362
           0.0128        36.2216       0.102555           1073           6562          52508
           0.0128        33.6869       0.103727            820           6639          53108
           0.0128        35.0833       0.102041            507           6529          52245
           0.0128        31.2415       0.100426            613           6431          51418
           0.0128        36.9889        0.10424            777           6672          53371
           0.0128        32.6391       0.102182            293           6540          52317
           0.0128        37.7466       0.103377            484           6615          52929
           0.0128        34.8257       0.101559            740           6500          51998
           0.0128         32.242       0.101551            394           6496          51994
           0.0128        36.7642       0.104197            676           6672          53349
           0.0128        34.0722       0.104084            408           6662          53291
           0.0128        40.7676       0.102988           1286           6589          52730
           0.0128         36.055       0.103471            780           6622          52977
           0.0128          36.59       0.102488            581           6558          52474
           0.0128         40.805       0.101689            845           6509          52065
           0.0128        31.5867       0.101344            301           6485          51888
           0.0128        32.1631       0.102063            353           6529          52256
           0.0136        42.5087       0.109295            740           6996          55959
           0.0136        41.2141       0.110967            632           7101          56815
           0.0136        44.8541       0.106412           1084           6811          54483
           0.0136        41.9292       0.110682            519           7081          56669
           0.0136          42.76        0.10908            613           6980          55849
           0.0136        43.8586       0.110361            751           7063          56505
           0.0136        49.9256       0.109199           1430           6989          55910
           0.0136        75.6289       0.110508           2231           7079          56580
           0.0136        46.1658        0.10909            713           6978          55854
           0.0136        42.1637       0.106619           1503           6824          54589
           0.0136        49.1385       0.110529            654           7077          56591
           0.0136        49.2218       0.111006            705           7107          56835
           0.0136        43.5207       0.108883           1097           6969          55748
           0.0136        43.8827       0.108953            737           6973          55784
           0.0136        45.0417       0.109443            675           7005          56035
           0.0136        56.3321       0.109371           1731           7000          55998
           0.0136        54.7755       0.110023           1661           7042          56332
           0.0136        42.7362       0.109404            744           7002          56015
           0.0136        52.0892       0.110475           1361           7066          56563
           0.0136        50.7968       0.110824            817           7093          56742
           0.0144        58.4765       0.113906           1377           7288          58320
           0.0144        75.3984       0.115371           1647           7385          59070
           0.0144        64.1819       0.117791            888           7536          60309
           0.0144        59.0297       0.115266           1432           7373          59016
           0.0144        46.2821       0.114293            697           7313          58518
           0.0144        77.4954       0.113297           2106           7252          58008
           0.0144        61.4014       0.114746           1043           7346          58750
           0.0144        67.0135       0.114473           1533           7328          58610
           0.0144        51.0809       0.113484            760           7264          58104
           0.0144        76.6945       0.114498           1824           7325          58623
           0.0144        70.5415       0.114537           1716           7332          58643
           0.0144        102.312       0.115467           3555           7393          59119
           0.0144        80.7834       0.115746           1776           7407          59262
           0.0144        47.3387       0.112467            559           7200          57583
           0.0144        64.3986       0.114477           1655           7326          58612
           0.0144        70.5771       0.116035           1640           7428          59410
           0.0144        51.6336       0.114896            920           7348          58827
           0.0144        93.6878       0.117129           1770           7495          59970
           0.0144        73.9365       0.115883           1119           7416          59332
           0.0144        65.3431       0.113125            677           7237          57920
           0.0152        110.078       0.122021           2028           7810          62475
           0.0152        187.827       0.121875           2301           7803          62400
           0.0152        98.3277       0.119578           2347           7653          61224
           0.0152        168.615       0.122152           3879           7818          62542
           0.0152        112.906       0.121945           3500           7803          62436
           0.0152        117.566       0.122477           1358           7838          62708
           0.0152        131.943       0.121865           2279           7800          62395
           0.0152        89.5627       0.118713           2041           7602          60781
           0.0152        99.7226       0.120037           2899           7688          61459
           0.0152        166.569       0.119938           2469           7676          61408
           0.0152        163.159       0.120768           3448           7727          61833
           0.0152        138.937       0.120621           3141           7721          61758
           0.0152        102.247       0.120453           2674           7709          61672
           0.0152        131.875       0.122807           1784           7862          62877
           0.0152        163.835       0.120754           1849           7727          61826
           0.0152         143.04       0.121953           2308           7804          62440
           0.0152        162.804       0.121316           2623           7764          62114
           0.0152         95.264       0.121242           1232           7761          62076
           0.0152        99.6562       0.119631           1598           7659          61251
           0.0152        95.9149       0.119996           1962           7683          61438
];

rows = size(data, 1);
cols = size(data, 2);

data_delay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+1);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_delay = [data_delay; data(ifirst, 1:cols-5), avg ci];
end

figure(1);
hold on;
plot(data_delay(:,1), data_delay(:,2), symbol);

data_throughput = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+2);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_throughput = [data_throughput; data(ifirst, 1:cols-5), avg ci];
end

figure(2);
hold on;
plot(data_throughput(:,1), data_throughput(:,2), symbol);

data_maxdelay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+3);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_maxdelay = [data_maxdelay; data(ifirst, 1:cols-5), avg ci];
end

figure(3);
hold on;
plot(data_maxdelay(:,1), data_maxdelay(:,2), symbol);


%-------- Saturation Analysis -----------
slope=[];
for i=2:size(data_throughput,1),
    slope(i-1) = (data_throughput(i,2)-data_throughput(i-1,2))/(data_throughput(i,1)-data_throughput(i-1,1));
end

for i=2:size(slope,2),
    if slope(i) < (0.95*mean(slope(1:i)))
        max_pir = data_throughput(i, 1);
        max_throughput = data_throughput(i, 2);
        min_delay = data_delay(i, 2);
        break;
    end
end
